package com.speljohan.rsbot.accessors;

import com.speljohan.rsbot.bot.input.Keyboard;
import com.speljohan.rsbot.bot.input.Mouse;
import com.speljohan.rsbot.bot.input.MouseWheel;

public interface Client {

	public long getActionCmd1();

	public int getActionCmd2();

	public int getActionCmd3();

	public short getActionID();

	public int getBaseX();

	public int getBaseY();

	public Callback getCallback();

	// public static Callback callback; //The variable we would like to be able
	// to implement

	// Between 0 and 2048
	public int getCameraCurveX();

	// Between 128 and 383
	public int getCameraCurveY();

	// Between 5000 and 7000
	public int getCamPosX();

	public int getCamPosY();

	// Between -1800 and -300
	public int getCamPosZ();

	public String[] getChatMessages();

	public String[] getChatNames();

	public String getCurrentPassword();

	public String getCurrentUsername();

	// Pointless as calculated independently by bot.
	public int[] getCURVECOS();

	public int[] getCURVESIN();

	public int getDestX();

	public int getDestY();

	public int getFriendCount();

	public long[] getFriendListAsLongs();

	public int[] getFriendNodeIDs();

	public Ground[][][] getGroundArray();

	// no idea. 1=unreachable 4=roof overhead 0=normal
	public byte[][][] getGroundByteArray();

	// VERY useful
	public GroundData[] getGroundDataArray();

	// tile height of points in between tiles
	public int[][][] getGroundIntArray();

	/* Added in rs495 - not sure which category */
	public int getIdleTime();

	public Interface[][] getInterfaceCache();

	public MRUNodes getItemDefMRUNodes();

	public int getItemSelected();

	public Keyboard getKeyboard();

	public int getLoginIndex();

	public int getLoopCycle();

	public Sprite[] getMapDots(); // class cast exception

	public Sprite[] getMapMarkers(); // class cast exception

	public String[] getMenuActions();

	// public int getMenuWidth();
	// public int getMenuHeight();
	public String[] getMenuOptions();

	// public int[] getChatTypes();// [100,x] where x loops from 0 to 30.
	// Pointless so removed.

	// public int getMenuActionRow();
	public int getMenuOptionsCount();

	// public int getMenuArea();
	public int getMenuX();

	public int getMenuY();

	public float getMinimapInt1();

	public int getMinimapInt2();

	public int getMinimapInt3();

	public Sprite getMinimapSprite(); // 512x512 Apparently all elements are 1.

	public Mouse getMouse();

	public int getMousePressButton();

	public int getMousePressLastButton();

	public long getMousePressTime();

	public int getMousePressX();

	public int getMousePressY();

	public MouseWheel getMouseWheel();

	public int getMouseX();

	public int getMouseY();

	public Player getMyPlayer();

	public NodeList[][][] getNodeListArray();

	public NPC[] getNPCArray();

	public int getNPCCount();

	public int[] getNPCIndexArray();

	public MRUNodes getObjectDefMRUNodes();

	public int getPlane();

	public Player[] getPlayerArray();

	public int getPlayerCount();

	public int[] getPlayerIndexArray();

	public int getPublicChatMode();

	public String getSelectedItemName();

	public String getSelectedSpellName();

	public int getSelfInteracting();

	public int[] getSettingArray();

	public Signlink getSignlink();

	public int[] getSkillExperiences();

	public int[] getSkillExperiencesMax();

	public int[] getSkillLevels();

	public int[] getSkillMaxes();

	public boolean[] getValidInterfaceArray();

	public int[][] getVia();

	public boolean isFlagged();

	public boolean isMembers();

	public boolean isMenuOpen();

	public boolean isSpellSelected();

	// Not yet implemented... but still okay as the jvm does checks at runtime
	public void setCallback(Callback callback);

	public int spellUsableOn();
}
